IPolyCtl - интерфейс который содержит ваши методы и свойства. Самый простой способ добавить свойство к этому интерфейсу состоит в том, чтобы щелкнуть правой кнопкой мыши в ClassView и выбрать Add Property.

Появится диалоговое окно Add Property to Interface которое позволит
ввести информацию о добавляемых свойствах.
1. В раскрывающемся списке типов
свойств выберите short.
2. Введите "Sides" как имя свойства
(Property Name). Поскольку Вы редактируете поле имени свойства, поле
Implementation показывает строки которые будут добавлены к вашему
IDL файлу.
3. Нажмите OK, чтобы закончить добавлять
свойство.

MIDL (программа, которая компилирует .idl файлы) определит метод Get который возвращает свойство и метод Put который устанавливает свойство. Когда MIDL компилирует файл он автоматически определяет два метода в интерфейсе put_ и get_ от имени свойства.
Наряду с добавлением необходимых строк к .idl файлу, Add Property to Interface также добавляет прототипы функции Get и Put к описанию класса в PolyCtl.h и добавляет пустую реализацию к PolyCtl.cpp.
Чтобы устанавливать и получить свойство вам нужно место для его хранения. Из FileView откройте PolyCtl.h и добавьте следующую строку в конце описания класса после
m_clrFillColor is defined: short m_nSides;
Теперь Вы можете выполнять Get и Put методы. Get_Sides и put_Sides функции были добавлены в PolyCtl.h. Вы должны добавить код в PolyCtl.cpp, которой соответствует приведенному ниже:
STDMETHODIMP CPolyCtl::get_Sides(short *pVal)
{
*pVal = m_nSides;
return S_OK;
}
STDMETHODIMP CPolyCtl::put_Sides(short newVal)
{
if (newVal > 2 && newVal < 101)
{
m_nSides = newVal;
return S_OK;
}
else
return Error(_T("Shape must have between 3 and 100 sides"));
}
Функция get_Sides просто возвращает текущее значение свойства Sides через pVal указатель. В put_Sides методе Вы проверяете что пользователь устанавливает свойство Sides к допустимому значению. Вы нуждаетесь в больше чем 2 сторонах что бы отображение было площадью и так как Вы будете сохранять массив точек для каждой стороны далее вам понадобиться ограничение по максимуму, 100 - приемлемое ограничение для максимального значения. Если недопустимое значение передано Вы используете ATL Error чтобы установить подробности ошибки в интерфейсе IErrorInfo. Это полезно если ваш контейнер нуждается в более подробной информации относительно ошибки чем информация возвращенная HRESULT.
Последняя вещь которую Вы должны сделать для свойства - инициализация m_nSides. Решим что треугольник является заданной по умолчанию формой. Добавим строку в конструктор PolyCtl.h:
CPolyCtl()
{
m_nSides = 3;
}
Вы теперь Вы имеете полную реализацию свойства по имени Sides.